import pyperclip,re

class Clipboard:
    """
    剪贴板操作工具类
    """
    @staticmethod
    def copy(text):
        """
        将文本复制到剪贴板
        :param text: 要复制的字符串
        """
        pyperclip.copy(text)

    @staticmethod
    def paste():
        """
        从剪贴板获取文本
        :return: 剪贴板中的字符串
        """
        return pyperclip.paste()
    

#------------------------------------------------------------------------------#


def parser(txt:str)->str:
    e=txt.strip()
    if e.startswith('t:') or e.startswith('tab:') or e.startswith('x:') or e.startswith('@'):
        return f"tab.ele('{e}')"
    if e.startswith('tab.ele') :
        if  e.startswith('tab.eles') :
            return e.replace('tab.eles','tab.ele')
        else:
            return e.replace('tab.ele','tab.eles')
    if e.startswith('//') :
        return f"tab.eles('x:{e}')"    
    if e=="iframe":
        return f"tab.eles('t:iframe')"
    if e in ["input","button","textarea","div"]:
        return f"tab.eles('t:{e}')"
    if e.startswith('"') and  e.endswith('"') :
        return f"tab.eles({e})"
    if e.startswith('www.'):
        cmd=f'tab.get("http://{e}")'
        return cmd
    if e.startswith('http') :
        cmd=f'tab.get("{e}")'
        return cmd
    
    # 需要最后处理
    if has_attribute_value_pattern(e):
        e2=convert_to_at_notation(e)
        return e2
    



def has_attribute_value_pattern(s):
    """
    检查字符串是否符合 `属性="值"` 或 `属性='值'` 的形式。
    
    Args:
        s (str): 待检查的字符串。
        
    Returns:
        bool: 如果匹配成功返回 True，否则返回 False。
    """
    # 正则匹配 `属性="值"` 或 `属性='值'` 的结构
    pattern = r'[\w-]+\s*=\s*["\'][^"\']*["\']'
    return bool(re.search(pattern, s))
def convert_to_at_notation(s):
    """
    将 `属性="值"` 或 `属性='值'` 转换为 `@属性=值`。
    
    Args:
        s (str): 输入字符串（如 `class="site-content"`）。
        
    Returns:
        str: 转换后的字符串（如 `@class=site-content`），若无匹配则返回原字符串。
    """
    # 正则匹配 `属性="值"` 或 `属性='值'`
    match = re.search(r'([\w-]+)\s*=\s*["\']([^"\']*)["\']', s)
    if match:
        attr, value = match.groups()
        return f"@{attr}={value}"
    return s  # 无匹配时返回原字符串
          
#------------------------------------------------------------------------------#
class ConsoleInfo:
    def __init__(self):
        self.logo = '''
 ____  ____      _          _ _
|  _ \|  _ \ ___| |__   ___| | |
| | | | |_) / __| '_ \ / _ \ | |
| |_| |  __/\__ \ | | |  __/ | |
|____/|_|   |___/_| |_|\___|_|_|'''
        self.help_info = '''
->##命令行使用热键说明##
tab         : 自动补全( url 官方语法 iframe  xpath )
F8          : 复制当前输入到剪贴板
ctrl+delete : 清空当前输入
ctrl+q      : 退出
help        : 显示帮助信息

->##被控浏览器热键说明##
F2          : 捕获DrissionPage语法
F4          : 捕获xpath语法
'''

        self.info_dict = {
            "logo": self.logo,
            "help_info": self.help_info
        }

    def help(self, type="simple"):
        if type == "simple":
            print(self.help_info)
        elif type == "full":
            print(self.logo)
            print(self.help_info)
     



if __name__ == "__main__":
    # 创建对象
    console = ConsoleInfo()
    # 调用 help 方法
    console.help("full")
   

